/*
 * This is Melet, a salary slip designer. Feed it with data regarding to salary payment, prepare it for print through the graphical presentation, and you have it done.
 * Copyright (C) 2014, AFDiaX
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * This program is based on UMLet, a Free UML Tool for Fast UML Diagrams.
 * To contact the authors of UMLet visit https://code.google.com/p/umlet/people/list
 * To contact the authors of Melet visit https://gna.org/users/gabocze
 */
package com.baselet.element.elementnew;

import com.baselet.control.enums.ElementId;
import com.baselet.element.NewGridElement;
import com.baselet.element.elementnew.plot.PlotGrid;
import com.baselet.element.elementnew.sueldos.BackgroundImage;
import com.baselet.element.elementnew.uml.ActivityObject;
import com.baselet.element.elementnew.uml.Actor;
import com.baselet.element.elementnew.uml.Class;
import com.baselet.element.elementnew.uml.Deployment;
import com.baselet.element.elementnew.uml.Frame;
import com.baselet.element.elementnew.uml.Generic;
import com.baselet.element.elementnew.uml.Hierarchy;
import com.baselet.element.elementnew.uml.Interface;
import com.baselet.element.elementnew.uml.Note;
import com.baselet.element.elementnew.uml.Package;
import com.baselet.element.elementnew.uml.SpecialState;
import com.baselet.element.elementnew.uml.State;
import com.baselet.element.elementnew.uml.SyncBarHorizontal;
import com.baselet.element.elementnew.uml.SyncBarVertical;
import com.baselet.element.elementnew.uml.Timer;
import com.baselet.element.elementnew.uml.UseCase;
import com.baselet.element.relation.Relation;

public abstract class ElementFactory {

	protected static NewGridElement createAssociatedGridElement(ElementId id) {
		switch (id) {
			case PlotGrid:
				return new PlotGrid();
			case Relation:
				return new Relation();
			case Text:
				return new Text();
			case UMLActor:
				return new Actor();
			case UMLClass:
				return new Class();
			case UMLDeployment:
				return new Deployment();
			case UMLFrame:
				return new Frame();
			case UMLGeneric:
				return new Generic();
			case UMLInterface:
				return new Interface();
			case UMLNote:
				return new Note();
			case UMLObject:
				return new ActivityObject();
			case UMLPackage:
				return new Package();
			case UMLSpecialState:
				return new SpecialState();
			case UMLState:
				return new State();
			case UMLSyncBarHorizontal:
				return new SyncBarHorizontal();
			case UMLSyncBarVertical:
				return new SyncBarVertical();
			case UMLTimer:
				return new Timer();
			case UMLUseCase:
				return new UseCase();
			case UMLHierarchy:
				return new Hierarchy();
			case BackgroundImage:
				return new BackgroundImage();
			default:
				throw new RuntimeException("Unknown class id: " + id);
		}
	}
}
